package bintree.leetcode;

/**
 * @Author: yuisama
 * @Date: 2021/9/7 10:43
 * @Description:判断两棵树是否相同
 * https://leetcode-cn.com/problems/same-tree/
 */
public class Num100_IsSameTree {
    public boolean isSameTree(TreeNode p, TreeNode q) {
        // 先处理根节点的情况
        // 1.两树都为空，一定相同
        // 2.两树其中有一颗为空，一定不相同
        // 3.两树根节点都不为空，判断根节点的值，再递归判断左树和右树的情况
        if (p == null && q == null)
            return true;
        // 走到这一步表示p和q一定一个不为空
        if (p == null || q == null)
            return false;
        // 此时两树都不为空
        if (p.val != q.val)
            return false;
        // 继续查看左树和右树是否完全相同
        return isSameTree(p.left,q.left) && isSameTree(p.right,q.right);
    }
}
